import os
import time
import random
from multiprocessing import Process,Pool, managers

def learn(name):
    print("子进程 %s (%s) 开始学习..."%(name,os.getpid()))
    start = time.time()
    time.sleep(random.random()*3)


if __name__ == "__main__":
    print("父进程 %s."%os.getpid())
    l = []
    p = Pool(5) # 创建进程池，最大进程数为5
    for i in range(5):
        p.apply_async(learn, args=(i,)) # 向进程池中添加任务，非阻塞
    print("等待所有子进程完成...")
    p.close() # 关闭进程池，不再接受新的任务
    p.join() # 主进程阻塞等待子进程的退出，join方法要在close或terminate之后使用
    print("所有子进程完成。")
    for i in l:
        print(i.get()) # 打印子进程的返回值
# print("父进程 %s."%os.getpid())

